package util;

import java.awt.AWTEvent;
import java.awt.AWTException;
import java.awt.Robot;
import java.awt.Toolkit;

import javax.swing.JFrame;

import AccionBoton.AccionClickRaton;

public class BarridoFila extends Barrido{
	
	private int _columnaInicial;
	private int _filaActual;
	
	public BarridoFila(Teclado teclado, JFrame frame, int mitad, int numColumnasBarrido, int tiempo){
		super(teclado, frame, mitad, numColumnasBarrido, tiempo);
		if(_mitad==0) _columnaInicial = 0;
		else _columnaInicial = _numColumnas - _numColumnasBarrido;
		this.barrer();
	}
	
	public void barrer(){
		salir = false;
		Robot r = null;
		try {
			r = new Robot();
		} catch (AWTException e) {
			e.printStackTrace();
		}   
		_frame.setContentPane(_teclado);
		_teclado.refrescar();
		Toolkit t = Toolkit.getDefaultToolkit();
		t.addAWTEventListener(new AccionClickRaton(this), AWTEvent.MOUSE_EVENT_MASK);
		
		_filaActual = 0;
		
		while(!salir){
			despintarTeclado();
			pintarFila(_filaActual);
			_teclado.refrescar();
			if (_teclado.hayBotonesValidos(_filaActual, _columnaInicial, _numColumnasBarrido)) r.delay(_tiempo);
			if(salir) break;
			if (_filaActual < _numFilas-1) _filaActual++;
			else _filaActual = 0;
		}
		despintarTeclado();
		if (_retroceso) _teclado.setEstado(new BarridoMitad(_teclado, _frame, _tiempo));
		else _teclado.setEstado(new BarridoColumna(_teclado, _frame, _mitad, _filaActual, _numColumnasBarrido, _tiempo));
	}

	private void pintarFila(int fila){
		for(int i=_columnaInicial; i<_columnaInicial + _numColumnasBarrido;i++) _teclado.pintarBotonPosicion(fila, i);
	}
}
